我不明白为什么这个函数是这样写的:
System.Array.Resize<int>(ref int[], int)
Run Code Online (Sandbox Code Playgroud)
如果默认情况下通过引用传递数组,为什么不是这样写的:
System.Array.Resize<int>(int[], int)
Run Code Online (Sandbox Code Playgroud) 每当按下键盘上的下一个按钮时,我都会尝试将注意力集中在下一个输入字段上。
从 React Native 文档中我了解到我们需要使用 useRef 钩子。但是按照文件
TypeError: null is not an object (evaluating 'filed2.current.focus')
我正在使用所有软件包的最新版本,以及带有打字稿模板的新反应本机应用程序。
这是我到目前为止所拥有的代码:
import React, {useRef} from 'react';
...
const filed1 = useRef(null);
const filed2 = useRef(null);
const onButtonClick = () => {
filed2.current.focus();
};
return (
<>
<FormInputPassword
ref={filed1}
returnKeyType="next"
onSubmitEditing={onButtonClick}
blurOnSubmit={false}
/>
<FormInputPassword
ref={filed2}
returnKeyType="done"
blurOnSubmit={false}
/>
</ >
);
Run Code Online (Sandbox Code Playgroud)
编辑:
function FormInputPassword(props) {
return (
<FormInputView>
<Input {...props} />
</FormInputView>
);
}
FormInputPassword.defaultProps = {
blurOnSubmit: true,
autoCorrect: false,
editable: true,
};
Run Code Online (Sandbox Code Playgroud) 在什么情况下 foreach 使用引用,在什么情况下 foreach 使用副本?
using System;
using System.Linq;
class A {
public int v;
}
class Program
{
static void Main() {
var ints = new int[] { 0, 1, 2 };
var array = ints.Select(i=>new A {v = i}).ToArray();
foreach(var a in array) {
a.v = 999;
}
var enumerable = ints.Select(i=>new A {v = i});
foreach(var a in enumerable) {
a.v = 999;
}
Console.WriteLine($"array.First = {array.First().v}");
Console.WriteLine($"enumerable.First = {enumerable.First().v}");
}
}
Run Code Online (Sandbox Code Playgroud)
jdoodle.com/ia/Jce
输出:
array.First = 999 …Run Code Online (Sandbox Code Playgroud) 我正在研究数据库,目前正在研究对象关系数据库项目,我遇到了一个关于对象表中可能的约束数量的小问题.我正在使用Hector Garcia-Molina(和其他作者)的"数据库系统:完整的书"作为参考,并且有一个像这样的通用SQL示例:
CREATE TYPE StarType AS (
name CHAR(30),
address AddressType,
bestMovie REF(MovieType) SCOPE Movies
);
Run Code Online (Sandbox Code Playgroud)
现在,我的项目中有一种类似的类型,因为它也使用类型中的另一种类型的引用,但是在那里放置引用的子句不包括Oracle中的SCOPE(至少我还没有找到它)在文档中它输出错误).所以我有这样的类型:
CREATE OR REPLACE TYPE "ApplicationType" AS OBJECT (
"person" REF "PersonType",
"competition" REF "CompetitionType",
"dateApplied" DATE
);
/
Run Code Online (Sandbox Code Playgroud)
......有效.但是当我想约束REF列时,我只能约束一个,如下所示:
CREATE TABLE "Applications" OF "ApplicationType" (
"person" SCOPE IS "People" /* or "competition" SCOPE IS "Competitions" */
)
OBJECT IDENTIFIER IS SYSTEM GENERATED;
Run Code Online (Sandbox Code Playgroud)
有没有办法为两个REF列提供约束?
这个C#的F#等价物是什么:
public T GetNewItem()
{
return new T();
}
Run Code Online (Sandbox Code Playgroud)
另外,如何将新的T()作为ref单元格返回,以便在需要out或ref参数的.Net库中使用?
有没有办法在C#中能够做到这一点:
map.player.x = 5;
Run Code Online (Sandbox Code Playgroud)
保持player类型Point(或静默可转换为一个)并仍然能够在执行任务时检查值的正确性?
更清楚:
Point 是由C#/ .net标准库定义的结构,并按值传递.Point方法实现为call-throughs Point是漫长而乏味的.Point将不允许上述内容.它必须写成(Point)(map.player).x,这是笨拙的.我是一个ocaml菜鸟.使用普通的旧的ref或int或其他简单的内置类型,到目前为止对我来说都是各方面的预期.我在元组的上下文中使用它们,其中ref是元组的成员.我可以更新refs,取消引用它们等.
# let e = 1, ref 1;;
val e : int * int ref = (1, {contents = 1})
# snd e := 2;;
- : unit = ()
# e;;
- : int * int ref = (1, {contents = 2})
# !(snd e);;
- : int = 2
Run Code Online (Sandbox Code Playgroud)
但是一旦我将一个命名类型"ref"声明为其他聚合(甚至是内置的简单)类型,事情总的来说就很糟糕了.我发现我不能再改变引用了,因为之前它们没有被声明为某种类型的"ref"类型.的!并且:=运算符失败.
语义似乎以奇怪的不一致的方式改变.以下只是一个例子.为什么编写下面的第一个代码块是合法的,但在顶部循环中执行类似的操作似乎是非法的(下面进一步说明)?第一个块被编译器接受,并且我们可以匹配一个构造类型的ref并使用!来访问它的值.第13行和第14行的运算符.这都在循环队列的上下文中,并使用#use从顶部循环中的文件加载:
type 'a element = 'a * 'a pointer
and 'a pointer = Pointer of 'a element ref;;
let next (_,n) = n;;
type 'a queue = 'a …Run Code Online (Sandbox Code Playgroud) 我正在写一个游戏,只会为我在世界上的碰撞而上课.我想在它的构造函数中传递两个列表,一个包含所有敌人,另一个包含玩家触发的所有子弹.
这是在XNA中完成的2D游戏,我应该这么说,但我觉得这里发帖是因为它更多地与C#ref关键字有关.如果我在将列表传递给构造函数时使用ref关键字.
现在,如果我开始搞乱列表中的元素,删除和添加元素,修改等,因为它们是通过引用传递的,所以我永远不必将列表重新传递到类中,如果列表本身包含在其他一些类中?
public Collsion_manager(ref List<Bullet> bullets_world, ref List<Enemy_class> enemies_world)
{
}
Run Code Online (Sandbox Code Playgroud) 我正在学习C和C#,这个问题适用于C#.你为什么要在指针上使用out和ref关键字?使用指针,您可以直接访问变量.我在msdn上找到了这个代码:here.
这是代码:
static int value = 20;
public unsafe static void F(out int* pi1, ref int* pi2)
{
int i = 10;
pi1 = &i;
fixed (int* pj = &value)
{
// ...
pi2 = pj;
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个主表单,它调用较小的表单.在主窗体中,我有一个被设置为的bool被调用,但是较小的形式的目的是检查一些事情并查看数据是否准备就绪,在这种情况下它设置为._dataReadyfalse_dataReadytrue
这是我的问题:我使用输入参数(如(ref bool _dataReady))调用迷你表单但问题是我无法在构造函数块之外访问它.
我试图使一个private bool并设置ref到,但改变的状态后,private bool在ref没有采取变化,不像是如何面向对象的编程工作.
这是我的一些代码:
//这就是我在主要内容中调用迷你形式的方式
new FrmAccounting(MyTextBox1.Text.Trim().Replace(",", "").ToInt32(),ref _dataReady).ShowDialog();
Run Code Online (Sandbox Code Playgroud)
这是迷你表单和代码的构造函数:
public FrmAccounting(decimal Price,ref bool _dataReady)
{
InitializeComponent();
dataReady=_dataReady;
}
private bool dataReady;
Run Code Online (Sandbox Code Playgroud)
然而,private bool在form(dataReady)true中设置不会改变ref(再次不像对象的工作方式)......这就是我认为会发生的事情.
我的问题是:如何更改,ref以便我可以直接在主要结果?
ref ×10
c# ×6
types ×2
.net ×1
arguments ×1
arrays ×1
constraints ×1
dereference ×1
f# ×1
foreach ×1
function ×1
generics ×1
keyword ×1
linq ×1
modifier ×1
mutable ×1
ocaml ×1
oracle ×1
out ×1
parameters ×1
pointers ×1
reactjs ×1
scope ×1
struct ×1
typescript ×1
union ×1
use-ref ×1
winforms ×1