![](/img/trans.png)
[英]Operator '<' cannot be applied to operands of type 'long' and 'ulong'
[英]how to fix operator '==' is ambiguous on operands of type ulong and long
我目前正在Discord Server中建立一個新命令,並且正在努力將UserId轉換回服務器中的Users Nickname。
我收到錯誤消息運算符'=='在ulong和long類型的操作數上不明確
有人可以幫我弄清楚我做錯了什么
Int64 memberId = reader.GetInt64(0);
string name = Context.Guild.Users
.Where(x => x.Id == memberId)
.First()
.Nickname != null
? Context.Guild.Users.Where(x => x.Id = memberId).First().Nickname
: Context.Guild.Users.Where(x => x.Id = memberId).First().Username;
Int64 votes = reader.GetInt64(2);
GOTWVote.Add($@"{name} has received {votes} vote(s)");
在.Where(x => x.Id = memberId)
,應該像以前一樣使用==
進行比較,而不是=
(歸因)。
Int64 memberId = reader.GetInt64(0);
string name = Context.Guild.Users
.Where(x => x.Id == memberId)
.First()
.Nickname != null
? Context.Guild.Users.Where(x => x.Id == memberId).First().Nickname
: Context.Guild.Users.Where(x => x.Id == memberId).First().Username;
Int64 votes = reader.GetInt64(2);
GOTWVote.Add($@"{name} has received {votes} vote(s)");
但是您可以將此代碼重構為此(請閱讀注釋):
var memberId = reader.GetInt64(0);
// search for the user just a single time!
var user = Context.Guild.Users.First(x => x.Id == memberId);
// apply the rule to define the name string
string name = @string.IsNullOrEmpty(user.Nickname) ? user.Nickname : user.Username;
var votes = reader.GetInt64(2);
GOTWVote.Add($@"{name} has received {votes} vote(s)");
嘗試將memberId
轉換為ulong
(或UInt64
),以便類型匹配x.Id
:
var memberId = (ulong)reader.GetInt64(0);
string name = Context.Guild.Users
.Where(x => x.Id == memberId)
...
...
此外,您還需要解決其他一些問題,如其他答案和評論所建議的那樣。 ;)
第一步是強制轉換以解決歧義運算符。 接下來,重新安排您的查詢以擺脫兩個額外的子查詢:
Int64 memberId = reader.GetInt64(0);
var user = Context.Guild.Users
.Where(x => x.Id == (UInt64)memberId)
.First();
string name =
user.Nickname != null
? user.Nickname
: user.Username;
Int64 votes = reader.GetInt64(2);
GOTWVote.Add($@"{name} has received {votes} vote(s)");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.