可能重复:
C#中属性和字段之间的差异
public class Test
{
public bool testData1;
public string testData2;
}
Run Code Online (Sandbox Code Playgroud)
要么
public class Test
{
public bool TestData1 { get; set; }
public string TestData2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
要么
public class Test
{
private bool testData1;
private string testData2;
public bool TestData1 { get { return testData1; } set { testData1 = value; } }
public string TestData2 { get { return testData2; } set { testData2 = value; } }
}
Run Code Online (Sandbox Code Playgroud)
哪种优化代码更好或更不必要?为什么?
这不是最后一个持有很多不必要的数据吗?
=======编辑: …
我创建的两个属性之间有什么区别(即优势/劣势)?两者似乎都是正确的,但在类中声明属性的最佳方式(实践)是什么?
[Serializable]
public class MySample
{
public string String1 = string.Empty;
private string _string2 = string.Empty;
public string String2
{
get { return _string2 ; }
set { _string2 = value; }
}
}
Run Code Online (Sandbox Code Playgroud) 为什么字段不能通过XML序列化程序在C#中序列化,而属性是?我知道属性实际上是方法,但我不明白为什么这应该有所作为.有谁知道答案吗?
非常感谢!
我想要重新提出我的问题.
我的问题是.获得我可以在整个项目中使用的相同列表的最佳方法是什么?
我的代码现在看起来像这样:
public static class MessagingController
{
static List<MessagingDelivery> MessagingDeliveryList = Messaging.GetMessagingDeliveryList();
}
internal static class Messaging
{
static List<MessagingDelivery> MessagingDeliveryList;
static Messaging()
{ MessagingDeliveryList = new List<MessagingDelivery>(); }
internal static void CreateMessagingText(short reference, short number, string text)
{ MessagingDeliveryList.Add(new MessagingDelivery(reference, number, text)); }
internal static void ChangeMessagingDelivery(short reference, string status, string error)
{ MessagingDelivery.ChangeStatus(reference, status, error); }
internal static List<MessagingDelivery> GetMessagingDeliveryList()
{ return MessagingDeliveryList; }
}
Run Code Online (Sandbox Code Playgroud)
老问题:
获得a static List<T>和为什么是"最佳实践" ?
代码1:
public static List<MessagingDelivery> messagingDeliveryList
= …Run Code Online (Sandbox Code Playgroud) 我看到我可以用两种方式宣布公共财产.它们都有get/set访问器,但它们之间有什么区别?
class Job
{
public int Interval { get; set; }
public string Key { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
class Job1
{
public int Interval = 0;
public string Key = string.Empty;
}
Run Code Online (Sandbox Code Playgroud)