我对C#中的自动属性有点困惑,例如
public string Forename{ get; set; }
Run Code Online (Sandbox Code Playgroud)
我知道你不需要声明私有变量来保存代码,但是当你不使用任何get或set逻辑时,属性的重点是什么?为什么不用
public string Forename;
Run Code Online (Sandbox Code Playgroud)
我不确定这两个语句之间有什么区别,如果你想要额外的get/set逻辑,我一直认为你使用过属性?
如果在C#自动属性中必须获取和设置get和set,为什么我必须打扰指定"get; set;" 什么?
我只是用MVC-Web-API查看knockout.js,我正在尝试创建一个Hello World页面,它将每5秒更新一次页面上的时间.它每隔5秒拨打一次电话,我可以在我的控制器(断点)中看到这个,但屏幕上仍然没有显示.
更新:我一直在努力解决这个问题,现在我已经确定我从服务器返回数据,每5秒钟调用一次控制器,并返回我需要的JSON(警报显示但是,页面上的span元素上仍然没有显示任何内容.
我实际上需要使用映射功能,因为我正在开发一个更大的网站,它有一个包含50多个属性的模型,并且不特别想要在viewmodel中单独映射它们.
我在下面提供了我的代码.
<span data-bind="text: TimeString"></span>
<script type="text/javascript">
var viewModel;
var getUpdates = setInterval(function () {
$.getJSON(
"/Values/Get", {},
function (model) {
alert(model.TimeString);
ko.mapping.fromJS(model, viewModel);
});
}, 5000);
$(document).ready(
function () {
$.getJSON(
"/Values/Get", {},
function (model) {
var viewModel = ko.mapping.fromJS(model);
alert(model.TimeString);
ko.applyBindings(viewModel);
});
});
function bindViewModel(model) {
ko.applyBindings(model);
}
Run Code Online (Sandbox Code Playgroud)
public class HelloWorldModel
{
public DateTime TimeDT { get; set; }
public String TimeString { get; set; }
}
public class ValuesController : Controller
{
public HelloWorldModel …Run Code Online (Sandbox Code Playgroud) 在Visual Studio 2008 Team System中,我刚刚在我的一个C#项目上运行了Code Analysis(来自Analyze菜单).产生的警告之一如下:
Microsoft.Design:因为字段"Connection._domain"在其声明类型之外是可见的,所以将其可访问性更改为private,并添加一个具有与当前字段相同的可访问性的属性,以提供对它的访问.
它指的是以下字段:
public abstract class Connection
{
protected string _domain;
}
Run Code Online (Sandbox Code Playgroud)
我不明白这个建议背后的原因.这是我认为它要我做的事情:
public abstract class Connection
{
private string _domain;
protected string Domain { get { return _domain; } set { _domain = value; } }
}
Run Code Online (Sandbox Code Playgroud)
两个问题:
考虑以下两个选项:
public int Foo { get; set; }
public int Foo;
Run Code Online (Sandbox Code Playgroud)
它们似乎在语义上是等价的,我相信它们甚至会编译成同一个IL.那么使用该物业有什么好处?看到一个公共领域让我感到不安,但我想不出使用属性语法的任何具体优势.如果将来需要显式的getter和setter,public int Foo;则可以替换为public int Foo { ... }不需要其他更改.我能想到的最好的是属性语法感觉更好,但我很难用这个理由来说服其他人.
在这种情况下使用属性语法的优点(如果有的话)是什么?
所以前几天我被告知在c#中使用public是不好的,所以说我创建了一个新类,并且在该类中我有一个方法,为什么最好将它声明为
private void nameOfMethod()
Run Code Online (Sandbox Code Playgroud)
而不是
public void nameOfMethod()
Run Code Online (Sandbox Code Playgroud)
我只是好奇,似乎无法在任何地方找到答案,那个告诉我不要使用公共错误的人?任何帮助,将不胜感激
编辑 我理解公共私人和受保护之间的区别完全正常,我只是想知道为什么我被告知最好避免公开