我正在为用户创建一个模型,我希望连接的属性设置为Now().这是我的代码:
[DefaultValue(DateTime.Now)]
public DateTime joined {get; set;}
Run Code Online (Sandbox Code Playgroud)
我收到错误:
属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式.
我究竟做错了什么?什么是做我想要的最好方法?
我有一节课:
public class MyClass
{
public int MyMethod()
{
Random rand = new Random();
return rand.Next() % 10 + 1;
}
}
Run Code Online (Sandbox Code Playgroud)
它的2个对象:
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
Run Code Online (Sandbox Code Playgroud)
问题obj1.MyMethod() == obj2.MyMethod()
始终存在.为什么会这样?什么是避免它的最佳方法?
我想扩展一个类(Vector2),使其可以转换为Point.我怎么做?
部分问题:
最后我希望能够做到这一点:
Vector2 foo = new Vector2(5.2f); // X = 5.2f Y = 5.2F
Point red = new Point(2,2); // X = 2 Y = 2
red = foo; // I know that you can make classes convert themselves automatically... somehow?
// Now red.X = 5 red.Y = 5
Run Code Online (Sandbox Code Playgroud) 我有一些dto对象,我想用wcf通过线路发送.在这个简单的例子中,它有FirstName,LastName和Name.Name返回first中的firstname和lastname.
通常情况下,我不会使用清除器为Name属性,但我必须,否则它无法序列化,所以我尝试内部但我在名字设置器上收到错误
LibSys.WebServices.dll中发生了未处理的"System.StackOverflowException"类型异常
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
[DataMember]
public string Name {
get { return string.Format("{0} {1}", FirstName, LastName); }
internal set { Name = value; }
}
Run Code Online (Sandbox Code Playgroud) 执行这段代码后:
int a = 50;
float b = 50.0f;
Console.WriteLine(a.GetHashCode() == b.GetHashCode());
Run Code Online (Sandbox Code Playgroud)
我们得到False
,这是预期的,因为我们正在处理不同的对象,因此我们应该得到不同的哈希值。
但是,如果我们执行以下命令:
int a = 0;
float b = 0.0f;
Console.WriteLine(a.GetHashCode() == b.GetHashCode());
Run Code Online (Sandbox Code Playgroud)
我们得到True
. 两个对象返回相同的哈希码:0
。
为什么会出现这种情况?他们不应该返回不同的哈希值吗?
我上了课:
class MyClass {
function __get($name) {
$this->{$name} = $_SESSION[$name];
}
public function isNull(){
return $this->MyVar === null;
}
}
Run Code Online (Sandbox Code Playgroud)
var_dump($obj->isNull()) //$obj is instance of MyClass
始终输出bool(true)
无关紧要$_SESSION['MyVar']
设定与否.但如果我按照预期添加$this->MyVar;
之前return $this->MyVar === null;
.
好吧,它似乎__get()
已执行(因为$MyVar
未设置,因此它无法访问)但属性在第二次使用之前保持为NULL.
它会发生,因为它根本没有设置?如何避免使用额外的line($this->MyVar;
)?
我知道,当它被允许施放时,不可能施放string
或bool
喜欢(int)MyString
(short)MyBool
等等.int
short
不幸的是我找不到解释,为什么.所以我在这里问.
为什么不允许显式转换某些数据类型(我不是问如何将字符串转换为其他类型或类似的东西)?
这是我想要做的:
$newArray = array();
foreach($student as $s){
$newArray[$s->id][$s->grade] = $s;
}
Run Code Online (Sandbox Code Playgroud)
我想按照他们的成绩对学生进行排序(更多的是一组而不是一种类型),但我只想要将成绩分类而不是id.我可以不这样做:
$newArray[$s->id] = $s->grade
asort($newArray)
Run Code Online (Sandbox Code Playgroud)
但是我需要剩下的数据$s
.此外,我希望维护每个学生的大量数据.
我怎样才能实现这样的排序?
我能够将值写入输入t表单type = text
对于前
<input type="text" value="xyz">
Run Code Online (Sandbox Code Playgroud)
但我想要的是,将值写入input type ="file".我已经尝试了下面的代码,但它不起作用.
<input type="file" value="something">
Run Code Online (Sandbox Code Playgroud) 我通过这个命令创建一个列表
var terminalList = sourceLists.Where(t => t.TagNo == tagList)
.Where(t => t.FromTerminal.Length > 0)
.Select(t => parseTerminal(t.FromTerminal))
.OrderBy(t => t).ToList();
Run Code Online (Sandbox Code Playgroud)
它适用于Tagno
除了创建这样的列表之外的每一个
terminalList={33,35}
Run Code Online (Sandbox Code Playgroud)
当我使用此命令时
var result = Enumerable.Range(terminalList.Min(), terminalList.Max())
.Except(terminalList)
.ToList();
Run Code Online (Sandbox Code Playgroud)
我检查了一下.terminalList.Min()
将是33并且terminalList.Max()
将是35.并且在这种情况下terminalList
有2个项目.
我得到了这个答案:
result = {34,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67}
Run Code Online (Sandbox Code Playgroud)
这是错误的正确答案{34}
.
我该如何追踪问题?