如何解决如何在不调用方法的情况下从另一个方法访问var
您好,这是我关于堆栈溢出的拳头真实文章,如果无法正确执行:D
ExternalController
我目前正在尝试找出如何致电,而不必将其定义为公众
(因为使用var context = await _interaction.GetAuthorizationContextAsync(returnUrl);
// redirect to external Identity provider automatically,if requested
if (string.IsNullOrWhiteSpace(context.IdP) == false)
{
var idp = context.IdP;
return RedirectToAction("Challenge","ExternalAuthentication",new
{
provider = idp,returnUrl
});
}
时由于某种原因而无法使用),而不必在方法namespace foobar //not originally named foobar
{
[DesignTimeVisible(false)]
public partial class MainPage : ContentPage
{
int Spinrate = 2000;
int Points = 1;
int clickmulti = 1;
public static object Public { get; private set; }
public MainPage()
{
InitializeComponent();
var gamemusic = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;
var laughtrack = CrossSimpleAudioPlayer.CreateSimpleAudioPlayer();
gamemusic.Load("audioloop.mp3");
laughtrack.Load("wslaugh.wav");
gamemusic.Play();
}
async void bigger(object sender,EventArgs args)
{
Points += Spinrate + (50 * 2 * clickmulti);
Pointdisplay.Text = Convert.ToString(Points);
cmdisplay.Text = Convert.ToString(clickmulti);
if (Spinrate >= 300)
{
Spinrate -= 50;
}
if (Spinrate <= 1000)
{
clickmulti = 2;
}
if (Spinrate <= 500)
{
clickmulti = 3;
}
await img.RelRotateTo(360,(uint)Spinrate);
laughtrack.Play();
}
}
}
中定义var
因为它在程序中造成了很多延迟。
目前我已经尝试过:
- 将
var laughtrack = CrossSimpleAudioPlayer.CreateSimpleAudioPlayer();
设为公共变量,但出现以下错误:
bigger
作为输出
-
我在类范围内定义了
laughtrack
,并且收到与尝试1相同的错误。 -
我在同一方法中添加了声明并调用
Error CS0825 The contextual keyword 'var' may only appear within a local variable declaration or in script code foobar
。它似乎会引起很多延迟,即使不是原因,每次调用该方法时,它仍然会加载它。
感谢所有为此付出努力的人!
解决方法
如果要使其在其他方法中可见,则需要在类级别(不在特定方法内)声明laughtrack
。但是,如果执行此操作,则不能使用var
,则必须知道实际的类型。
ISimpleAudioPlayer laughtrack;
public MainPage()
{
InitializeComponent();
var gamemusic = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;
laughtrack = CrossSimpleAudioPlayer.CreateSimpleAudioPlayer();
gamemusic.Load("audioloop.mp3");
laughtrack.Load("wslaugh.wav");
gamemusic.Play();
}
,
您的第一次尝试非常好,而且确实是您需要执行的操作,但是var
在函数外部无法使用。只需明确地写出变量的类型即可!
当您创建一个方法或简单地将其称为函数时,您在其中定义的所有变量或嵌套函数都将作用于该特定函数或代码块,并且在该作用域之外将不可用,除非被以下方法返回或抛出该功能。
在您的情况下,标准方法是使用属性和方法定义结构。但是,请考虑如何启动这些属性。如果那是通过调用一个函数,那么您仍然需要调用该函数,但是它允许出现Singleton行为。
为进一步阐明,考虑纯函数编程的概念,其中纯函数需要一些输入并返回单个输出。在OOP中,该方法可以更新全局变量(在C#中没有这样的东西,但是C ++和C有这些变量)以及类或结构中的作用域属性/变量。但是,您不能直接访问其成员。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。