相关疑难解决方法(0)

C#自动属性

我对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# automatic-properties c#-3.0

52
推荐指数
4
解决办法
2万
查看次数

C#自动属性 ​​- 为什么我要写"get; set;"?

如果在C#自动属性中必须获取和设置get和set,为什么我必须打扰指定"get; set;" 什么?

c# automatic-properties c#-3.0

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

Knockout.js - 使用新值每5秒更新一次页面

我只是用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)

asp.net-mvc jquery asp.net-web-api knockout.js

6
推荐指数
2
解决办法
5017
查看次数

在哪些情况下,将字段更改为属性是一个重大变化?

在阅读Jon Skeet关于字段与属性的文章时,他提到将字段更改为属性是一个重大变化.

我想了解这种变化可能导致中断的常见情况.除了方案,如果可以,请提供任何详细信息.

首先,其他地方提到了以下几点:

  • 如果在类上使用反射,则无法将字段更改为属性.即使我没有细节,这也很明显.序列化是一种情况,其中反射用于迭代对象,将字段更改为属性将破坏序列化程序或更改输出

  • 您无法轻松绑定字段.(这是为什么?我在这里阅读)

  • ???

编辑:罗伯特有一个全面的列表,列出了在字段上选择属性的原因,并解释了它们之间的切换如何导致一个突破性的变化.

.net c# field properties

5
推荐指数
2
解决办法
667
查看次数

C#protected field to private,添加属性 - 为什么?

在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)

两个问题:

  1. 我是否正确理解了建议要求我做什么,代码明智?
  2. 为什么要我这样做?

c# static-analysis access-levels

5
推荐指数
1
解决办法
2687
查看次数

使用默认访问权限的自动实现属性而不是使用公共字段有什么好处?

可能重复:
C#:公共字段与自动属性
我是否需要使用{get; 组; 获取和设置时没有特殊操作的c#字段

考虑以下两个选项:

public int Foo { get; set; }

public int Foo;
Run Code Online (Sandbox Code Playgroud)

它们似乎在语义上是等价的,我相信它们甚至会编译成同一个IL.那么使用该物业有什么好处?看到一个公共领域让我感到不安,但我想不出使用属性语法的任何具体优势.如果将来需要显式的getter和setter,public int Foo;则可以替换为public int Foo { ... }不需要其他更改.我能想到的最好的是属性语法感觉更好,但我很难用这个理由来说服其他人.

在这种情况下使用属性语法的优点(如果有的话)是什么?

c# properties

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

为什么在c#中使用"public"不好

所以前几天我被告知在c#中使用public是不好的,所以说我创建了一个新类,并且在该类中我有一个方法,为什么最好将它声明为

private void nameOfMethod()
Run Code Online (Sandbox Code Playgroud)

而不是

public void nameOfMethod()
Run Code Online (Sandbox Code Playgroud)

我只是好奇,似乎无法在任何地方找到答案,那个告诉我不要使用公共错误的人?任何帮助,将不胜感激

编辑 我理解公共私人和受保护之间的区别完全正常,我只是想知道为什么我被告知最好避免公开

c#

-7
推荐指数
1
解决办法
200
查看次数