相关疑难解决方法(0)

如何为C#Auto-Property提供默认值?

如何为C#Auto-Property提供默认值?我要么使用构造函数,要么还原为旧语法.

使用构造函数:

class Person 
{
    public Person()
    {
        Name = "Initial Name";
    }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

使用普通属性语法 (使用默认值)

private string name = "Initial Name";
public string Name 
{
    get 
    {
        return name;
    }
    set
    {
        name = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

c# automatic-properties

1773
推荐指数
16
解决办法
78万
查看次数

字段和属性之间有什么区别?

在C#中,是什么使字段与属性不同,何时应该使用字段而不是属性?

c# field properties

1032
推荐指数
17
解决办法
42万
查看次数

代表和活动之间有什么区别?

代表和活动之间有什么区别?两者都不能保存对可以执行的函数的引用吗?

c# events delegates glossary

300
推荐指数
8
解决办法
12万
查看次数

C#3.0自动属性 ​​- 有用与否?

注意:这是在我开始使用C#时发布的.凭借2014年的知识,我可以真正地说,自动属性是C#语言中发生过的最好的事情.

我习惯使用私有和公共字段在C#中创建我的属性:

private string title;
public string Title
{
    get { return title;  }
    set { title = value;  }
}
Run Code Online (Sandbox Code Playgroud)

现在,使用.NET 3.0,我们获得了自动属性:

public string Title { get; set; }
Run Code Online (Sandbox Code Playgroud)

我知道这更像是一个哲学/主观问题,但除了为每个字段保存五行代码之外,是否有任何理由使用这些自动属性?我个人的抱怨是那些属性隐藏了我的东西,我不是黑魔法的忠实粉丝.

事实上,隐藏的私有字段甚至没有显示在调试器中,这是好的,因为get/set函数什么都不做.但是当我想实际实现一些getter/setter逻辑时,我必须使用私有/公共对.

我看到了我节省大量代码(一对六行)而不会失去以后更改getter/setter逻辑的能力的好处,但是我再次通过简单地声明一个公共字段"Public string Title"就可以做到这一点需要{get; 组; 阻止,因此甚至可以节省更多代码.

那么,我在这里错过了什么?为什么有人真的想要使用自动属性?

.net c# automatic-properties

152
推荐指数
10
解决办法
4万
查看次数

C#3.0+中属性和字段的区别

我意识到它似乎是C#中字段和属性之间有什么区别的重复但我的问题略有不同(从我的观点来看):

一旦我知道了

  • 我不会将我的课程用于"仅适用于属性的技术"和
  • 我不会在getter/setter中使用验证代码.

是否有任何区别(风格/未来发展除外),如设置属性时的某种控制类型?

是否有任何额外的区别:

public string MyString { get; set; }
Run Code Online (Sandbox Code Playgroud)

public string myString;
Run Code Online (Sandbox Code Playgroud)

(我知道,第一个版本需要C#3.0或更高版本,并且编译器会创建私有字段.)

c# field properties automatic-properties c#-3.0

138
推荐指数
6
解决办法
7万
查看次数

为什么有空的get set属性而不是使用公共成员变量?

可能重复:
C#:公共字段与自动属性

重复?我认为不会:
这个问题是一样的"为什么要使用属性,而不是公共领域".具有指定getter和setter的属性与公共字段大不相同.我的问题是,是一个没有吸气剂和二传手的财产,任何不同.

由于最近有一个空的getter和setter的能力,使用它们而不是仅仅声明一个公共成员变量有什么好处?

例:

public string MyProperty
{
    get;
    set;
}
Run Code Online (Sandbox Code Playgroud)

与:

public string MyProperty;
Run Code Online (Sandbox Code Playgroud)

c# properties

31
推荐指数
5
解决办法
4万
查看次数

Java的"属性"是否与C#中的属性相同?

在C#中,您可以使用属性使数据字段可公开访问(允许用户直接访问它),同时保留在这些直接访问的字段上执行数据验证的功能.Java有类似的东西吗?对于Instance,假设存在一个带有以下实现的C#类(见下文):

public class newInt{

    public newInt(){...}

    public int x{
        get{ return this.x }
        set{ this.x = isValid(value) }
    }
}

private static int isValid(int value){...}
Run Code Online (Sandbox Code Playgroud)

类中的这个定义允许用户在从中检索值并为其赋值时"自然地"使用数据字段'x'.以下是它将如何在主要使用.

public class Test{

    public static void main(String[] args){

        newInt a = new newInt();
        a.x = 50;

        int b = a.x;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是...... java也可以这样做吗?如果是这样,它叫什么?

c# java properties

18
推荐指数
2
解决办法
5153
查看次数

C#中的属性

为什么我们能写

public int RetInt
{
   get;set;
}
Run Code Online (Sandbox Code Playgroud)

代替

public int RetInt
{
   get{return someInt;}set{someInt=value;}
}
Run Code Online (Sandbox Code Playgroud)

两者有什么区别?

c# properties accessor

16
推荐指数
2
解决办法
1018
查看次数

自动实现的属性c#

  1. 有人可以解释一下使用Auto-Implemented Properties c#背后的想法吗?

    public class Customer
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    我有动力使用私有​​字段的属性,因此我们可以确定如何访问私有字段.但在这里 - 就像从一开始就将这个领域定义为公开一样.没有?

  2. 将字段定义为"public const"或将其定义为具有get-only属性之间是否存在差异?

c#

11
推荐指数
2
解决办法
9475
查看次数

在C#中使用LINQ进行分组需要帮助

我的代码和Class2的列表中有这两个类.我想组列表中的元素通过dateID使用LINQ.

public class Class1
{
    public string ID;
    public int y;
    public int z;
}

public class Class2 
{
    public List<Class1> a;
    public int p, q;
    public string s;
    public DateTime date;
}
Run Code Online (Sandbox Code Playgroud)

我的清单与此类似:

List<Class2> object1 = new List<Class2>
{
    new Class2 {p = 5, q = 6, date = DateTime.Now, a = new List<Class1> { new Class1 { ID = "3643746HDJ", y = 0, z = 9 }, new Class1 { ID = "746327846HDJ", y …
Run Code Online (Sandbox Code Playgroud)

c# linq

9
推荐指数
1
解决办法
158
查看次数