簡體   English   中英

如何修復運算符'=='對於ulong和long類型的操作數不明確

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM