相关疑难解决方法(0)

为什么C#3.0对象初始化器构造函数括号是可选的?

似乎C#3.0对象初始化程序语法允许在存在无参数构造函数时排除构造函数中的打开/关闭括号对.例:

var x = new XTypeName { PropA = value, PropB = value };
Run Code Online (Sandbox Code Playgroud)

相反:

var x = new XTypeName() { PropA = value, PropB = value };
Run Code Online (Sandbox Code Playgroud)

我很好奇为什么构造函数打开/关闭括号对后面是可选的XTypeName

c# syntax types language-design initializer

111
推荐指数
4
解决办法
1万
查看次数

C#:通过构造函数与实例化将属性分配给属性

假设我有一个Album班级:

public class Album 
{
    public string Name {get; set;}
    public string Artist {get; set;}
    public int Year {get; set;}

    public Album()
    { }

    public Album(string name, string artist, int year)
    {
        this.Name = name;
        this.Artist = artist;
        this.Year = year;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我想将数据分配给类型的对象时Album,接下来的两种方法之间有什么区别:

通过构造函数

var albumData = new Album("Albumius", "Artistus", 2013);
Run Code Online (Sandbox Code Playgroud)

实例化时

var albumData = new Album 
                    {
                         Name = "Albumius",
                         Artist = "Artistus",
                         Year = 2013
                    };
Run Code Online (Sandbox Code Playgroud)

c# oop constructor properties

85
推荐指数
3
解决办法
12万
查看次数

使用对象初始化器有什么好处吗?

使用C#对象初始化器有什么好处吗?

在C++中没有引用,并且所有内容都封装在对象中,因此在创建对象后使用它们而不是初始化成员是有意义的.

它们在C#中使用的情况如何?

如何:使用对象初始化程序初始化对象(C#编程指南)

.net c# memory-management

53
推荐指数
3
解决办法
2万
查看次数

声明一个带或不带括号的类的新实例

我正在编写一个小示例来练习创建类的新实例。

我有以下代码:

class Person
{
   public string Name { get; set; }
   public int Age { get; set; }
}

class MainClass
{
   static void Main()
   {
      var p = new Person
      {
         Name = "Harry",
         Age = 20
      };
      Console.WriteLine($"Name: {p.Name}. Age: {p.Age}");

      p = new Person()
      {
         Name = "Hermonie",
         Age = 18
      };
      Console.WriteLine($"Name: {p.Name}. Age: {p.Age}");

      Console.ReadLine();
   }
}
Run Code Online (Sandbox Code Playgroud)

它正在工作。

我的问题:有什么区别

var p = new Person {};
Run Code Online (Sandbox Code Playgroud)

var p = new Person() {};
Run Code Online (Sandbox Code Playgroud)

我应该使用哪个版本?

c#

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

C#中的构造函数与初始化函数

可能重复:
对象初始值设定项和构造函数之间有什么区别?

在c#中,您可以构造一个对象,如:

public class MyObject{

     int val1;
     int val2;

     public MyObject(int val1, val2){
           this.val1 = val1;
           this.val2 = val2;
     }
}
Run Code Online (Sandbox Code Playgroud)

附:

MyObject ob = new MyObject(1,2);
Run Code Online (Sandbox Code Playgroud)

或者:

MyObject ob = new MyObject(){ val1 = 1, val2 = 2 };
Run Code Online (Sandbox Code Playgroud)

这种构造函数之间有什么不同?

.net c# constructor

7
推荐指数
2
解决办法
431
查看次数

我应该使用对象初始化器还是构造函数?

我刚刚学习了对象初始化器,并想知道什么时候使用它们的最佳实践.

这是我读到的关于它们的内容:http://msdn.microsoft.com/en-us/library/vstudio/bb384062.aspx 它清楚地表明它们是创建匿名类型所必需的,但我想知道我是否应该在所有其他情况下,尝试将它们更喜欢正常的构造函数.

c# constructor object-initializer

6
推荐指数
4
解决办法
1万
查看次数

如何在对象初始值设定项中使用Console.Write?

当我Console.Write在对象初始化程序中使用时,我收到此错误

错误CS0747初始化程序成员声明符无效

person[i] = new Karmand()
            {
                Console.Write("first name:"),
                FirstName = Console.ReadLine(),
                LastName = Console.ReadLine(),
                ID = Convert.ToInt32(Console.ReadLine()),
                Hoghoogh = Convert.ToDouble(Console.ReadLine())
            };
Run Code Online (Sandbox Code Playgroud)

.net c# object-initializers

4
推荐指数
1
解决办法
99
查看次数

Object()和Object {}之间的区别

C#将允许使用Object()或Object {}创建对象.与Object()和Object {}有什么区别

public item getitem()
{

return new item()

}

public item getitem()
{

return new item {}

}
Run Code Online (Sandbox Code Playgroud)

c# oop constructor object

3
推荐指数
2
解决办法
512
查看次数

如何在C#中一次分配多个对象属性?

背景

我有一些DataGridView我转换为实体对象的行.在转换过程中,我重置了一些值.由于"基本"数据来自DataBoundItem当前DataGridViewRow,因此使用对象初始化不是我正在寻找的选项,我不想分配来自DataBoundItem再次(冗余)的第一个对象的每个值.

所以我的问题是:是否可以一次分配多个对象属性,如果,你是如何实现它的?

研究

我发现了以下问题,但没有一个能解决我的问题:

在c#中一次分配多个变量

一次分配多个变量

在Windows窗体(C#)中使用一个声明设置多个属性

foreach (DataGridViewRow CurrRow in DataGridView.Rows)
{
    SomeObject SomeObj = (SomeObject) CurrRow.DataBoundItem;
    SomeObj.PropertyA = 0;
    SomeObj.PropertyB = 0;
    SomeObjCollection.Add(SomeObj);
}
Run Code Online (Sandbox Code Playgroud)

我试过了什么

单独使用逗号分配属性(在昏迷时给出语法错误):

TimeEntries.Hours, TimeEntries.Expenses = 0;
Run Code Online (Sandbox Code Playgroud)

c#

3
推荐指数
1
解决办法
407
查看次数

使用新的Class()和新的Class {}从类创建对象有什么区别?

我有以下课程:

public class TestClass {
    public string ClassName {
        get;
        set;
    }
}
Run Code Online (Sandbox Code Playgroud)

做的有什么区别:

var instance = new TestClass();
Run Code Online (Sandbox Code Playgroud)

并做

var instance = new TestClass { };
Run Code Online (Sandbox Code Playgroud)

我认为你需要包含()来调用对象的构造函数.那是什么意思?

编辑:有人可以解释哪个最好?或者,如果忽略构造函数,优点或缺点?

编辑2:对不起,如果我问过已经回答的问题.差异对我来说有点清楚,但我真的不明白我如何混合和匹配()和{},因为有时候()被忽略了,我想知道我什么时候能这样做

.net c# oop class object

0
推荐指数
1
解决办法
920
查看次数

我无法在新对象上初始化成员变量

我对 C# 还很陌生,希望在这里得到一些帮助。mypath在本例中,该变量是一个占位符。该类包含在using Programm.src;

这是我的代码,我想input_excel_pathmainWindow1对象中初始化变量。

编译器中的结果

错误 CS0747:无效的初始化程序成员声明符和编译器错误 CS0165:使用未分配的局部变量“名称”。

        MainWindow mainWindow1 = new MainWindow()
        {
            mainWindow1.m_input_excel_path = mypath;
        };
Run Code Online (Sandbox Code Playgroud)

这是我的课:

   class MainWindow
   {
    
    public string m_input_excel_path = String.Empty;
    
    public MainWindow(string input_excel_path )
    {
        m_input_excel_path  = input_excel_path;       
    }
}
Run Code Online (Sandbox Code Playgroud)

c#

0
推荐指数
1
解决办法
159
查看次数