我是新的C#开发人员。
我有一个班级雇员
声明带有和不带有“ ()”的对象时,存在区别。 Visual Studio不会标记错误 。例如
Employee newEmployee = new Employee() { FirstName = "David", LastName = "HasselHoff", Email_ID ="dh@fdh.com" };
或
Employee newEmployee = new Employee { FirstName = "David", LastName = "HasselHoff", Email_ID ="dh@fdh.com" };
答案 0 :(得分:3)
您到那里的代码示例没有什么区别。括号是完全可选的。
尽管有所不同,但还是会有一些差异
首先,如果您的Employee类具有要为其提供参数的非默认构造函数,则在将参数传递给构造函数的同时,您不能省略括号。
Employee newEmployee = new Employee(employeeId) { FirstName = "David", LastName = "HasselHoff", Email_ID ="dh@fdh.com" };
第二个:C#的下一版本(9),其中类型定位得到了改进,因此,如果您已经声明了要创建的类型,则无需包括类的名称:
Employee newEmployee = new() { FirstName = "David", LastName = "HasselHoff", Email_ID ="dh@fdh.com" };
在这种情况下省略括号会使编译器认为您正在尝试创建匿名类型。
答案 1 :(得分:2)
“()”中的括号和内容称为constructor。如果您的类不需要任何参数,则可以在不带括号的情况下实例化该对象。看看this,它提供了有关如何实例化带括号和不带括号的对象的多个示例。
希望您喜欢C#
答案 2 :(得分:1)
如果没有将任何参数传递给构造函数,则可以跳过左括号和右括号。
您可以详细了解here。
Cat cat = new Cat { Age = 10, Name = "Fluffy" };
Cat sameCat = new Cat("Fluffy"){ Age = 10 };
类Cat
具有重载的构造函数,因此您可以将Name
作为参数传递。
答案 3 :(得分:1)
这些是匿名的对象初始化器。有两种情况:
::This is a placeholder file to check if VBScript is running
SET File="%TEMP%\jobrunning.txt"
del /F /Q %File%
::Print Each File in Array
for /l %%n in (0,1,%arrsize%) do (
SET FILEPATH="FILEPATH=!file[%%n]!
GoTo file_exists
)
::Is Job Still Running?
:file_exists
IF EXIST %File% (
GoTo :file_exists
) ELSE (
ECHO %PFUNC% %FILEPATH%
%PFUNC% %FILEPATH%
EXIT /B
)
括号。()
Employee newEmployee = new Employee("David") { LastName = "HasselHoff", Email_ID ="dh@fdh.com" };
括号。()
这两个都是相同的。