c# - 如何在 c# 中使用另一个类中的方法返回的变量?
问题描述
我有一个返回 long 的方法,我希望能够在所述方法之外使用它,但我似乎无法弄清楚......有点帮助?
这是方法:
using System;
using System.IdentityModel.Tokens.Jwt;
namespace API
{
public class UserIDClass
{
protected string responseHeader = "";
protected long id = 0;
public long idMethod(string responseHeader, long id)
{
string[] bearerToken = responseHeader.Split(" ");
var txtJwtIn = bearerToken[1];
var handler = new JwtSecurityTokenHandler();
var jsonToken = handler.ReadToken(txtJwtIn);
var decodedToken = handler.ReadToken(txtJwtIn) as JwtSecurityToken;
var sub = decodedToken.Subject;
string[] subSplit = sub.Split("|");
long goodId = Int64.Parse(subSplit[1]);
if (goodId == id)
{
Console.WriteLine("goodId "+ goodId + " = id " + id);
}
else {
Console.WriteLine("goodId = " + goodId + " but the id you searched was " + id);
return goodId;
}
}}
这是我实例化该方法的代码:
[HttpGet("{id}")]
[Authorize]
public async Task<ActionResult<User>> Get(long id)
{
var responseHeader = Request.Headers["Authorization"].FirstOrDefault();
UserIDClass useridclass = new UserIDClass();
useridclass.idMethod(responseHeader, id);
var User = await _context.Users.FindAsync(id);
Console.WriteLine(goodId);
return Ok(User);
}
我希望能够在该方法之外长期使用 goodId,但是当我尝试在 get 方法中将其写入控制台时,我得到“该名称在您当前的上下文中不存在”。我觉得我在这里错过了一些超级简单的东西。我还在学习所以要温柔:)
解决方案
从我可以从您的代码中收集到的信息来看,当您实例化该方法时,您应该创建一个长变量来保存方法 idMethod 的输出。看起来您正在尝试访问长变量“goodId”,但它超出了范围。我会尝试这样的事情。
long id = useridclass.idMethod(responseHeader, id);
推荐阅读
- javascript - 平面列表不显示在其他组件中
- java - 发送后删除文件android studio
- mongodb - 为什么我们在 Mongo 中需要一个带有复合索引的附加 LIMIT 阶段
- pine-script - 尝试调试此源代码,遇到一些简单的语法错误
- windows - 在 Windows 卷上操作名称中以点开头的 QNAP 文件
- flutter - HTTP.get() 挂断
- sql-server - 在 SQL Server 2014 上使用 over 子句运行总计
- c# - 共享驱动器上的 C#“系统找不到指定的路径”
- snowflake-cloud-data-platform - 三秘密的好处
- sql-server - 在 ROW_NUMBER() OVER ( ORDER BY ) 中使用 case 语句会导致严重的性能问题