做这样的事情是安全的:
private void MyFunction()
{
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 1);
timer.Tick += (object sender, object e) =>
{
timer.Stop();
// Some code here
};
timer.Start();
}
Run Code Online (Sandbox Code Playgroud) 我有一个WPF页面,上面有一个Grid.
有三排.第0行包含GridView Height="*".第1行包含GridSplitter Height="auto".第2行包含详细信息表单Height="2*".
这是事情 - 我有一个按钮,应该切换详细信息表单的可见性.这很好用.除了它只隐藏第2行中的表单,它不会扩展第0行中的网格以填充空格.我想要的是按钮在第0行中切换GridView以占用所有空间,然后切换回原来的位置.
显然,使用行内表单的可见性无法完成我想要的任务.
但是我需要玩什么呢?
这些可能是在c ++中声明数组(并为它们分配内存)的两种方法中的两种
1. int a[3];
2. int *b = new int[3];
Run Code Online (Sandbox Code Playgroud)
我想了解c ++如何以不同的方式处理这两者.
一个.在这两种情况下,我都可以使用以下语法访问数组:a[1]和b[1]
湾 当我尝试cout<< a和cout<< b,都打印相应数组的第一个元素的地址.
它看起来好像a和b都被视为指向数组的第一个元素的指针.
C.但奇怪的是,当我尝试这样做时cout << sizeof(a),sizeof(b)他们分别打印出不同的值 - 分别为4和12.
我不明白为什么在这种情况下sizeof(b),正在打印整个数组的大小.
c++ arrays pointers memory-management dynamic-memory-allocation
这是我开始使用的代码:
long modifiedTime = [some time here];
File oldFile = new File("old_name.txt");
boolean renamed = oldFile.renameTo(new File("new_name.txt");
boolean timeChanged = oldFile.setLastModified(modifiedTime);
System.out.println("renamed: " + renamed);
System.out.println("time changed: " + timeChanged);
Run Code Online (Sandbox Code Playgroud)
我看到的输出是:
renamed: true
time changed: false
Run Code Online (Sandbox Code Playgroud)
但当我尝试时:
long modifiedTime = [some time here];
boolean renamed = new File("old_name.txt").renameTo(new File("new_name.txt"));
boolean timeChanged = new File("new_name.txt").setLastModified(modifiedTime);
System.out.println("renamed: " + renamed);
System.out.println("time changed: " + timeChanged);
Run Code Online (Sandbox Code Playgroud)
这个输出似乎工作得很好:
renamed: true
time changed: true
Run Code Online (Sandbox Code Playgroud)
为什么第二种方法有效,第一种方法不适用?
在cpp中,以下代码片段的结果是:5 5 5但是在java中,相同代码片段的结果是:3 5 7我不知道为什么,是否有人可以解释它?非常感谢!
class H
{
public:
H &pr (int n, char * prompt)
{
cout<<prompt<<n<<" ";
return *this;
}
H &fn(int n)
{
return pr(n,"");
}
};
void test()
{
int v=3;
H h;
h.fn(v).fn(v=5).fn((v=7));
}
Run Code Online (Sandbox Code Playgroud) 我试图删除字符串中的每个Unicode字符,如果它落在下面的任何范围内.
\uD800-\uDFFF
\u1D800-\u1DFFF
\u2D800-\u2DFFF
\u3D800-\u3DFFF
\u4D800-\u4DFFF
\u5D800-\u5DFFF
\u6D800-\u6DFFF
\u7D800-\u7DFFF
\u8D800-\u8DFFF
\u9D800-\u9DFFF
\uAD800-\uADFFF
\uBD800-\uBDFFF
\uCD800-\uCDFFF
\uDD800-\uDDFFF
\uED800-\uEDFFF
\uFD800-\uFDFFF
\u10D800-\u10DFFF
Run Code Online (Sandbox Code Playgroud)
作为初始原型,我试图通过在replace函数中使用正则表达式来删除第一个范围内的字符.
var buffer = "he\udfffllo world";
var output = buffer.replace(/[\ud800-\udfff]/g, "");
d.innerText = buffer + " is replaced with " + output;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,角色似乎已被替换为罚款.
但是,当我用它替换它
var buffer = "he\udfffllo worl\u1dfffd";
var output = buffer.replace(/[\ud800-\udfff\u1d800-\u1dfff]/g, "");
d.innerText = buffer + " is replaced with " + output;
Run Code Online (Sandbox Code Playgroud)
我看到一些意外的事情 我的输出显示为:
hellloworl᷿fd被替换为
这里有两点需要注意:
\u1dfff不显示为一个字符 - \u1dff转换为字符,f最后它被视为自己的字符关于如何实现这一目标的任何建议都将非常感激.
编辑
我的总体目标是过滤掉 …
我有一个ReactJS应用TypeScript与redux和我用redux-toolkit建立我的减速器。随着应用程序变得越来越大,我想开始重构我的减速器。
我的 redux 状态如下所示:
{
customers: Customers[],
orders: {
state1: SomeIndependentState1,
state2: SomeIndependentState2,
state3: SomeDependentState2,
state4: SomeDependentState3,
}
}
Run Code Online (Sandbox Code Playgroud)
在customers和orders片是独立的,我可以很容易地写出两个不同的减速对他们来说,他们结合combineReducers后。
现在,我想进一步分解我的orders减速器。
state1并且state2是完全独立的。state3取决于来自 的数据state1。state4取决于来自state1和 的数据state2。有没有办法继续使用createReducerfrom redux-toolkit(或工具包中的其他功能)为切片中的每个嵌套切片创建减速器orders?
当我开始为 重写我的 reducer 时orders,这是我到目前为止所拥有的:
export const ordersReducer = (state: Orders, action: AnyAction) => {
return { …Run Code Online (Sandbox Code Playgroud) 垃圾收集器如何知道对象和变量超出范围,以便垃圾收集器可以收集它们?
我一直在玩wpf和2路数据绑定以更好地理解它,并且我注意到当文本框有2路数据绑定到属性时,属性被调用两次.我通过在调用属性时将值写入输出窗口来验证这一点.我的代码如下: -
我的xaml
<Page
x:Class="_2waybindTest.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:_2waybindTest"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<TextBox HorizontalAlignment="Left" Margin="55,93,0,0" TextWrapping="Wrap" Text="{Binding TestProperty, Mode=TwoWay}" VerticalAlignment="Top" Width="540"/>
<Button Content="Button" HorizontalAlignment="Left" Margin="55,31,0,0" VerticalAlignment="Top" Click="Button_Click_1"/>
<TextBox HorizontalAlignment="Left" Margin="55,154,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="540"/>
</Grid>
</Page>
Run Code Online (Sandbox Code Playgroud)
我要测试的简单viewmodel类
public class viewmodel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _TestProperty;
public void SetTestProperty()
{
this.TestProperty = "Set Test Property";
}
public string TestProperty{
get
{
return this._TestProperty;
}
set
{
this._TestProperty = value;
if (PropertyChanged != null)
{
PropertyChanged(this, …Run Code Online (Sandbox Code Playgroud) 假设我有一个可能类型的对象IEnumerable<T>.我想写一个方法,如果对象是类型IEnumerable<T>,不是null,并且不为空,则返回true .
这是我到目前为止所得到的:
public bool IsNullOrEmpty(object obj)
{
if (obj != null)
{
if (obj is IEnumerable<object>)
{
return (obj as IEnumerable<object>).Any();
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
如果我传入一个类型的对象List<string>,但是如果我传入一个类型的对象则不行List<int>.失败是因为因为obj is IEnumerable<object>回归false.
知道如何让所有通用IEnumerables工作吗?
c# ×3
wpf ×3
c++ ×2
xaml ×2
.net ×1
arrays ×1
asp.net ×1
astral-plane ×1
c#-4.0 ×1
data-binding ×1
file-rename ×1
generics ×1
gridsplitter ×1
java ×1
javascript ×1
linq ×1
pointers ×1
react-redux ×1
reactjs ×1
regex ×1
replace ×1
silverlight ×1
unicode ×1