我想在数据传输对象,DTO对象中具有readonly属性,没有设置; 访问者如:
public class ViewBannerDTO
{
public int Id { get; }
}
Run Code Online (Sandbox Code Playgroud)
但为什么得到:
'ViewBannerDTO.Id.get'必须声明一个body,因为它没有标记为abstract或extern.自动实现的属性必须定义get和set访问器.
以及为什么我不能:
public readonly int Id{get;}
Run Code Online (Sandbox Code Playgroud) 假设我有一个Employee
班级:
public class Employee
{
public string Name { get; set;}
public string Address { get; set ;
}
Run Code Online (Sandbox Code Playgroud)
现在我想用Employee
类'属性名创建一个数组,即:
string[] employeeArray = { "Name", "Address" };
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有硬编码属性名称的情况下实现这一目标?
在Visual Basic .Net中有所谓的属性过程,它可以具有以下外观
public property Name(ByVal x As String) As String
get
return name & x;
end get
set
name = x & value;
end set
end property
Run Code Online (Sandbox Code Playgroud)
c#.net中的等价物是什么.我知道c#有属性和字段,但在整个MSDN网站上我找不到任何对c#属性过程的引用.
非常感谢任何一个例子
我有一个'base',它有一个virtual int
名为'id' 的自动实现属性.
class bbase
{
public virtual int id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我从这个类继承到'派生'类时,我得到:
class Derived : bbase
{
public override int id
{
get
{
return base.id;
}
set
{
base.id = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
初始化基类和派生类并将值分配给基类属性后,如下所示:
bbase b2 = new bbase();
Derived d2 = new Derived();
b2.id = 6;
Run Code Online (Sandbox Code Playgroud)
当我尝试从派生类输出值时,它输出'0':
Console.WriteLine(d2.id);
Run Code Online (Sandbox Code Playgroud)
我的困惑是,当我尝试使用虚拟方法的相同方法时,它工作正常.base.method()
工作正常的派生类方法.它返回基本方法中的任何内容,但为什么不返回自动实现的属性?
class bbase
{
public virtual void execute() { Console.WriteLine("base.execute2"); }
}
class Derived : bbase
{
public override void execute() …
Run Code Online (Sandbox Code Playgroud) 我目前正在学习属性并遇到了一些问题.当我在get
方法中返回我的属性时,我收到一个递归错误.
这是因为每当我返回属性时它会激活get方法,它返回属性,激活get方法等?
这是我的代码:
using UnityEngine;
struct Enemy
{
public int Bonus;
private int gold;
public int Gold
{
get
{
return Gold + Bonus;
}
set
{
gold = value;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我一直在阅读PHP 手册的“可见性”部分,在第一条评论中,有人提到:
外部代码可以将 Item 属性转换为任何其他 PHP 类型(布尔值、整数、浮点数、字符串、数组和对象等)——另一个巨大的错误。
考虑这个例子:
class base {
public $foo = 1;
}
$first = new base();
(string)$first->foo; //I thought just this expression would typecast
var_dump($first->foo); //but I found it still is int
$first->foo = (string)$first->foo;
var_dump($first->foo); //ok so public props can be typecasted
Run Code Online (Sandbox Code Playgroud)
是不是我们不能从外部更改其类型的受保护和私有属性?或者这也适用于公共财产吗?
我试过这个属性文件:
# test config
# global configuration
!title=Test report
!background=fff
query=...
paramSource=...
Run Code Online (Sandbox Code Playgroud)
但!param
与!background
被从来没有读过.
为什么?
我有以下类...我如何初始化一些值
我的问题是,我如何在Main上初始化RootObject与一些值例如
Rootobject robj = new Rootobject();
robj.inchistor.Add()
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace JsonSample3
{
public class Customerinfo
{
public string customername { get; set; }
public string address { get; set; }
public string postcode { get; set; }
}
public class Inchistory
{
public Customerinfo customerinfo { get; set; }
public string r { get; set; }
public string reference { get; set; }
public string region { get; set; }
}
public class …
Run Code Online (Sandbox Code Playgroud) 我通常使用 C# 编程,但也使用旧语言 Delphi。据我所知,在 Delphi 中,属性使用大量代码,如下所示:
private
FOPPORTUNITY_NR : string;
procedure SetOPPORTUNITY_NR(const aOPPORTUNITY_NR: string);
function GetOPPORTUNITY_NR: string;
public
property OPPORTUNITY_NR: string read GetOPPORTUNITY_NR write SetOPPORTUNITY_NR;
implementation
procedure TTypeName.SetOPPORTUNITY_NR(const aOPPORTUNITY_NR: string);
begin
if (SpecialStrUtils_13.IsBlankStr(aOPPORTUNITY_NR)) then
raise Exception.CreateFmt('OPPORTUNITY_NR cannot be empty');
FOPPORTUNITY_NR := aOPPORTUNITY_NR;
end;
function TTypeName.GetOPPORTUNITY_NR: string;
begin
if (SpecialStrUtils_13.IsBlankStr(FOPPORTUNITY_NR)) then
raise Exception.CreateFmt('OPPORTUNITY NUMBER not set');
Result := FOPPORTUNITY_NR;
end;
Run Code Online (Sandbox Code Playgroud)
在 C# 中,我可以像这样编写上面的代码:
private string? _opportunityNr = null;
public string OpportunityNr
{
get => _opportunityNr ?? throw new Exception("Opportunitynr not set"); …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个测验模板,我将用于模块评估.在这个过程中,我用单选按钮创建了一个真/假问题.当我点击分数按钮检查我的答案时,我得到属性的值"if"为null或未定义,而不是Function对象."我检查了单选按钮id以确保它与我的If中的id匹配( document.getElementById('answer_true').checked)语句.我所有其他带有单选按钮的多项选择问题都可以正常工作.我似乎无法把手指放在问题的根源上.分数按钮调用check_tfQ函数并告诉我问题在if语句中.任何帮助将不胜感激.
<script language="JavaScript" type="text/javascript">
<!--
// variable declarations
score=0;
counter=0;
c=1;
correct="Correct! ";
incorrect="Incorrect! ";
// function declarations for each question
function Question1()
{
document.getElementById("main_ques").innerHTML="1. Put question 1 here.";
document.getElementById("choice1").innerHTML="Put answer 1.1 here.";
document.getElementById("choice2").innerHTML="Put answer 1.2 here.";
document.getElementById("choice3").innerHTML="Put answer 1.3 here.";
document.getElementById("counter").innerHTML="Counter is "+c;
}
function checkQ1()
{
c+=1;
if (document.getElementById('answer_a').checked)
{
score+=1;
document.getElementById("reply_b").innerHTML=correct;
document.getElementById("testscore").innerHTML=score;
}
else if (document.getElementById('answer_a').checked==false)
{
document.getElementById("reply_a").innerHTML=incorrect;
}
}
function Question2()
{
document.getElementById("main_ques").innerHTML="2. Put question two here.";
document.getElementById("choice1").innerHTML="Put answer 2.1 here.";
document.getElementById("choice2").innerHTML="Put answer 2.2 here."; …
Run Code Online (Sandbox Code Playgroud) 我可以声明两个不同类型的属性,但在C#中具有相似的名称.像这样的东西:
public class Types
{
public string Element
{
get { return ""; }
}
public int Element
{
get { return 0; }
}
}
Run Code Online (Sandbox Code Playgroud) 有没有办法做到这一点
Bombs();
Run Code Online (Sandbox Code Playgroud)
还有这个
Bombs(3);
Run Code Online (Sandbox Code Playgroud)
有班级?
properties ×12
c# ×8
.net ×3
casting ×1
constructor ×1
delphi ×1
inheritance ×1
java ×1
javascript ×1
list ×1
null ×1
object ×1
oop ×1
overriding ×1
php ×1
reflection ×1
vb.net ×1