【发布时间】:2015-01-03 12:26:16
【问题描述】:
我是 OOP 的初学者。昨天我试图阅读一些 mvvm/wpf 示例,当然我遇到了麻烦......我在理解下面的一些代码时遇到了一些问题:
{
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Addres { get; set; }
}
这只是普通的 Person 类,这里没有什么不寻常的地方。问题是我看不懂下面的代码:
private void SayHi_Click(object sender, RoutedEventArgs e)
{
Person person = new Person
{
FirstName=FirstName.Text,
LastName=LastName.Text,
Addres=Address.Text
};
我不明白的部分是:
Person person = new Person
{
FirstName=FirstName.Text,
LastName=LastName.Text,
Addres=Address.Text
};
我不确定这到底是什么。我认为每个新对象都应该像这样初始化:Class class= new Class();。为什么“新人”后面没有()?我们用 {} 代替 ()。我知道我们可以使用默认的、参数化的、静态的和私有的构造器。有人可以向我解释一下吗? CodeProject 的以下教程中的类似情况:
http://www.codeproject.com/Articles/165368/WPF-MVVM-Quick-Start-Tutorial
我们有一个歌曲班
public class Song
{
#region Members
string _artistName;
string _songTitle;
#endregion
#region Properties
/// The artist name.
public string ArtistName
{
get { return _artistName; }
set { _artistName = value; }
}
/// The song title.
public string SongTitle
{
get { return _songTitle; }
set { _songTitle = value; }
}
#endregion
}
我们当然有这个类的视图模型:
public class SongViewModel
{
Song _song;
public Song Song
{
get
{
return _song;
}
set
{
_song = value;
}
}
public string ArtistName
{
get { return Song.ArtistName; }
set { Song.ArtistName = value; }
}
}
再说一遍,这部分代码是我无法理解的:
public class SongViewModel
{
Song _song;
public Song Song
这是什么“宋_song;”是?这是宋课的对象?而且“宋歌”这个属性也很诡异……大概是我知识欠缺
【问题讨论】:
-
C# 中的编译器已经并将以越来越高的速度进行设计,旨在消除编码中的大部分日常琐事。那些需要花费大量时间的事情,因为它们一直都在完成,编译器会通过速记代码进行优化。当编译器从您的代码生成 IL 时,它会重写该对象初始值设定项以符合 CLS。编译器有很多错觉,每一个都比下一个更快乐。
-
宋 _song 是句法偏好。每当我看到使用下划线的代码示例时,我都会将其翻译成小写版本,而不是不带下划线。
标签: c# wpf oop mvvm mvvm-toolkit