【发布时间】:2013-08-21 16:44:01
【问题描述】:
我对python初始化器(本质上是Python对象构造器语法)有一定的了解,在Python中实例化一个对象的语法如下:
class Account:
def __init__(self,name=None,address="Not Supplied",balance=0.0):
this.name = name
this.address=address
this.balance=balance
为什么呢,在 C# 中,我必须在构造方法的主体中提供默认值,而在 python 中我可以将它们声明为可选,并传入默认值(参见__init__ 的签名):
public class Account
{
private string name;
private string address;
private decimal balance;
public Account (string inName, string inAddress, decimal inBalance)
{
name = inName;
address = inAddress;
balance = inBalance;
}
public Account (string inName, string inAddress)
{
name = inName;
address = inAddress;
balance = 0;
}
public Account (string inName)
{
name = inName;
address = "Not Supplied";
balance = 0;
}
}
为什么我不能在 C# 中执行以下操作?
public class Account
{
private string name;
private string address;
private decimal balance;
public Account (string inName, string inAddress="not supplied", decimal inBalance=0;)
{
name = inName;
address = inAddress;
balance = inBalance;
}
C# 中的构造函数语法是否可能与 Python 的初始化器语法相似(如果不是完全重复的话)?
【问题讨论】:
-
我不确定问题是什么。。第二个 C# sn-p 应该与您的 python sn-p 匹配(忽略分号)。
-
我不明白...最后一个 sn-p 你希望它如何工作?因为它确实是这样工作的。
-
@default.kramer:最后一个 sn-p 是我期望它工作的方式。是这样的吗?
-
是的,从 C# 4.0 开始
-
你试过了吗? (答案是肯定的)
标签: c# python constructor default-constructor object-initialization