首页 > 解决方案 > 如何在 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 方法中将其写入控制台时,我得到“该名称在您当前的上下文中不存在”。我觉得我在这里错过了一些超级简单的东西。我还在学习所以要温柔:)

标签: c#.net

解决方案


从我可以从您的代码中收集到的信息来看,当您实例化该方法时,您应该创建一个长变量来保存方法 idMethod 的输出。看起来您正在尝试访问长变量“goodId”,但它超出了范围。我会尝试这样的事情。

long id = useridclass.idMethod(responseHeader, id);

推荐阅读