相关疑难解决方法(0)

C#:我可以删除"{get; set;}"吗?

是否有区别:

public T RequestedValue { get; set; }
Run Code Online (Sandbox Code Playgroud)

public T RequestedValue;
Run Code Online (Sandbox Code Playgroud)

取自此代码:

public class PropertyChangeRequestEventArgs<T>:EventArgs
{
    public PropertyChangeRequestEventArgs(T pRequestedValue)
    {
        RequestedValue = pRequestedValue;
    }

    public T RequestedValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

c#

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

C#成员变量继承

我对C#有点新,但我在编程方面有相当广泛的背景.

我正在尝试做什么:为游戏定义不同的MapTiles.我已经像这样定义了基本的MapTile类:

public class MapTile
{
    public Texture2D texture;
    public Rectangle mapRectangle;

    public MapTile(Rectangle rectangle)
    {
        this.mapRectangle = rectangle;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我定义一个子类GrassTile,如下所示:

class GrassTile : MapTile
{
    new Texture2D texture = Main.GrassTileTexture;
    new public Rectangle mapRectangle;

    public GrassTile(Rectangle rectangle) : base(rectangle)
    {
        this.mapRectangle = rectangle;
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的Main类中,我正在创建一个像这样的新maptile:

Maptile testTile;
testTile = new GrassTile(new Rectangle(0, 0, 50, 50);
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试渲染此testTile时,其纹理最终为null.如果我在MapTile中定义纹理,我的代码工作正常,所以它与我以前的实现无关.

那么我怎样才能让GrassTile能够修改MapTile的成员变量纹理呢?或者让我的主类识别GrassTile的纹理,而不是MapTile,我也搞乱了接口,但我不能声明接口成员变量.我还没有得到C#继承的其他内容吗?

提前致谢

c# variables inheritance member-variables

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

何时在C#类声明中使用get和set

可能重复:
C#.NET 3.5+中属性和字段之间的差异

使用之间有什么区别

public string Username { get; set; }
Run Code Online (Sandbox Code Playgroud)

和使用

public string Username;
Run Code Online (Sandbox Code Playgroud)

我一直在使用第一个,但想了解两者之间是否有任何区别,以及一个场景应该优先于另一个场景的情况。

c#

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

C#autoproperty与普通字段

在这个例子中,Foo.Something和Bar.Something之间有什么有效的区别吗?

class Foo
{
    public string Something;
}

class Bar
{
    public string Something{get; set;}
}

class Program
{
    static void Main(string[] args)
    {
        var MyFoo = new Foo();
        MyFoo.Something = "Hello: foo";
        System.Console.WriteLine(MyFoo.Something);

        var MyBar = new Bar();
        MyBar.Something = "Hello: bar";
        System.Console.WriteLine(MyBar.Something);
        System.Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

AFAIK他们的行为完全相同.如果他们为什么不在Foo中使用普通的字段?在java中,我们使用setter来强制执行新的不变量而不会破坏代码和getter来返回安全数据但是在c#中你总是可以将Foo重写为:

class Foo
{
    private string _Something;
    public string Something
    {
        get { 
            //logic
            return _Something; 
            }
        set { 
            //check new invariant
            _Something = value; 
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

旧代码不会被破坏.

c# automatic-properties

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

是否可以用C#以外的语言实现属性?

在最近的一次C#和WPF中,我喜欢C#的属性:

public double length_inches
{
    get { return length_metres * 39.0; }
    set { length_metres = value/39.0; }
}
Run Code Online (Sandbox Code Playgroud)

当然,注意到length_metres可能会从字段变为属性,而代码无需关心.WPF还可以非常愉快地将UI元素绑定到对象属性.

当我第一次学习类和对象时,我认为有一种方法可以做到,因为它看起来很明显!隐藏类中复杂性的关键在于您不再需要关心存储的内容.但直到现在才看到它.

有趣的是,我第一次看到它在VB.Net中完成.OO纯度的前沿.

问题是,我可以重新使用我经常使用的其他语言的属性,比如javascript,python,php吗?在javascript中,如果我将一个变量设置为一个闭包,我不会再次获得闭包,而不是它的结果吗?

javascript php c# python properties

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

我应该用get声明我的抽象类的属性; 组;?

我正在制作一个小程序,它将抓取我的硬盘并显示在给定驱动器中找到的文件列表.

我的想法是拥有一个基本的File类,并实现从File.cs类继承的Picture.cs,Video.cs和Document.cs类.

这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SharpLibrary_MediaManager
{
    public abstract class File
    {
        public string name;
        public string fileType;
        public int size;
        public DateTime creationDate;
        public DateTime modificationDate;        
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该为每个属性声明这样的简写代码:

public string name { get; set; }
Run Code Online (Sandbox Code Playgroud)

任何指导都会有所帮助.谢谢.:)

编辑:

我的意思是直接替换这一行:

public string name;
Run Code Online (Sandbox Code Playgroud)

用这一行:

public string name { get; set; }
Run Code Online (Sandbox Code Playgroud)

c# field properties c#-3.0

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

这两种财产申报之间的根本区别是什么?

以下两个声明之间的主要区别是什么?

public string Name
{
  get { return "Settings"; }
}
Run Code Online (Sandbox Code Playgroud)

public const string Name = "Settings";
Run Code Online (Sandbox Code Playgroud)

两者都不能被改变吗?

c# properties

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

属性与get的区别; 组; 没有得到; 组;

我不明白静态属性之间的区别:

public static int intId;
Run Code Online (Sandbox Code Playgroud)

并得到 特性:

public int intId
{
  get
  {
    return intId;
  }
  set
  {
    intId = value;
  }
}
Run Code Online (Sandbox Code Playgroud)

这两者有什么区别?他们的工作方式相同或不同?

c# static get properties set

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

在ASP MVC4中传递模型背后会发生什么

现在学习ASP MVC,仅仅是我在MVC上的第3周

我对建模传递做了一些测试,基本上控制器只是获取模型,并且没有做任何事情就进入视图,但似乎代码失败了.

下面是我创建的ViewModel

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Bank2.Models.ViewModel
{
    public class PaymentView
    {
        public List<Wires_SWIFT> lists{get; set;}
        public string b_str{get; set;}
        public string o_str{get; set;}
    }
}
Run Code Online (Sandbox Code Playgroud)

这是视图:

@model ViewModel
@using(Html.BeginForm("Payment","Home",FormMethod.Post)){

        @Html.TextBoxFor(d=> d.o_str)<br/>
        @Html.TextBoxFor(d=> d.b_str)<br/>
        <input type="submit" name="Search">
}
Run Code Online (Sandbox Code Playgroud)

控制器抓住模型并立即通过

...
[HttpPost]
public ActionResult Payment(ViewModel m){
   return View(m)
}

...
Run Code Online (Sandbox Code Playgroud)

我在texbox中键入了两个字符串:比如"aa"和"bb",在我点击提交后,他们应该在那里,因为相同的对象被传回,但现在该字段为空

我是否错过了关于建模传递的重要内容?欢迎任何形式的建议

asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

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

C#中的自动属性

除了较少的代码行之外,还需要了解使用自动属性的好处吗?

我们最初使用如下:

private int sample;

public int Sample
{ get {return sample};
  set {this.sample=value};
}
Run Code Online (Sandbox Code Playgroud)

现在我们直接设置它.为什么我们用来定义一个私有变量?

c# properties

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